﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DDD.Core {
    /// <summary>
    /// エンジン全体に関する設定を行うクラス
    /// </summary>
    /// <remarks>
    /// エンジン全体の設定値を保存する <c>static</c> クラスです。
    /// 通常これらの値を変更する必要はありません｡変更するべきではありません｡
    /// </remarks>
    public static class GlobalSettings {
        /// <summary>
        /// スタティック コンストラクター
        /// </summary>
        /// <remarks>
        /// エンジン全体の設定値はここで初期化される。
        /// </remarks>
        static GlobalSettings () {
            Tolerance = 0.00001f;
        }

        /// <summary>
        /// 最大許容誤差
        /// </summary>
        /// <remarks>
        /// 一部の構造体は等号 ("==") を使って比較する場合に厳密に値が一致しなくても、ある程度以内の差であれば
        /// ”等しい”と見なします。この差を最大許容誤差と言います。
        /// 以下の構造体では各要素の差がすべてこの最大許容誤差以下の時”等しい”と見なされます。
        /// 初期値は 0.00001f です。
        /// <see cref="Vector2{T}"/>,<see cref="Vector3{T}"/>,<see cref="Vector4{T}"/>,
        /// <see cref="Quaternion"/>, <see cref="Matrix3x3"/>,<see cref="Matrix4x4"/>,
        /// なお最大許容誤差は <see cref="System.Object.GetHashCode"/> では考慮されません。
        /// 従って <c>A == B</c> と判定される2つのオブジェクトでも <c>A.GetHasCode() != B.GetHashCode()</c> となる可能性があります。
        /// </remarks>
        public static float Tolerance { get; set; }

    }
}
